package com.qf.service.impl;

import com.qf.dao.UserDao;
import com.qf.dao.impl.UserDaoImpl;
import com.qf.pojo.User;
import com.qf.service.UserService;
import com.qf.utils.MailUtils;

import java.sql.SQLException;

/**
 * @author Kuke
 * @date 2021/9/2
 * 针对用户业务接口实现
 */
public class UserServiceImpl implements UserService {

    /**
     * 校验用户名是否存在
     * @param username 前台注册页面输入的用户名
     * @return 返回值true,表示可以注册;false,不能注册!
     *
     * * */
    @Override
    public boolean checkUser(String username) {
        //调用数据接口
        UserDao userDao = new UserDaoImpl() ;
        User user = userDao.selectUserByName(username) ;
        //如果用户不等于存在,不能注册
        if(user!=null){
            return false ;
        }
        return true;
    }

    /**
     * 注册用户信息
     * @param user 用户实体信息
     */
    @Override
    public void registerUser(User user) {

        //调用用户数据接口
        UserDao userDao = new UserDaoImpl() ;

        //添加数据到数据库中
        int count =  userDao.addUser(user) ;

        //设置邮件的内容
        String emailContent = "欢迎称为会员,请<a href='http://localhost:8080/RaclMall_System_admin_war_exploded/active?code="+user.getCode()+"'>点击激活邮箱</a>" ;
        //给收件人发送一份激活邮件
        MailUtils.sendMail(user.getEmail(),emailContent,"用户邮件激活") ;





    }

    /**
     * 通过激活获取用户
     * @param code 激活码
     * @return   返回用户实体
     */
    @Override
    public User getCode(String code) {
        //调用用户的数据接口
        UserDao userDao = new UserDaoImpl() ;
        User user = userDao.selectUserByCode(code) ;

        //完成业务判断
        if(user == null){
            return null ; //不存在
        }

        //存在,设置用户的激活状态
        user.setState(1);
        //调用用户数据接口:更新用户信息
        userDao.updateUser(user) ;

        return user;
    }

    /**
     * 通过用户名和密码获取用户
     * @param username  前台输入用户名
     * @param password  输入的密码
     * @return  返回用户实体
     */
    @Override
    public User getUser(String username, String password) {
        try {
            //调用数据访问接口
            UserDao userDao = new UserDaoImpl() ;
            User user = userDao.selectUserByNameAndPwd(username,password) ;
            if(user!=null){
                return user ;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }
}
